package com.demo.java.OD101_150.OD111;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【找车位】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145696968
 */
public class OdMain {

    /**
     * 该方法用于计算并输出空车位到最近车位的最大最小距离
     * @param array 存储车位状态的数组，0表示空车位，1表示已占车位
     */
    private static void solve(int[] array) {
        int maxValue = 0;  // 用于记录所有空车位的最大最小距离
        int[] leftDistances = new int[array.length];  // 存储每个车位到最近左侧1的距离
        int[] rightDistances = new int[array.length]; // 存储每个车位到最近右侧1的距离

        // 计算每个元素到最近左侧1的距离
        int lastLeftOne = -1; // 上一个已占车位的位置
        for (int i = 0; i < array.length; i++) {
            if (array[i] == 1) {  // 如果当前位置是1，更新最近的左侧1的位置
                lastLeftOne = i;
            }
            if (lastLeftOne == -1) {  // 如果没有找到左侧的1
                leftDistances[i] = Integer.MAX_VALUE; // 设置为无穷大，表示没有左侧车位
            } else {
                leftDistances[i] = i - lastLeftOne;  // 计算到最近左侧车位的距离
            }
        }

        // 计算每个元素到最近右侧1的距离
        int lastRightOne = -1; // 下一个已占车位的位置
        for (int i = array.length - 1; i >= 0; i--) {
            if (array[i] == 1) {  // 如果当前位置是1，更新最近的右侧1的位置
                lastRightOne = i;
            }
            if (lastRightOne == -1) {  // 如果没有找到右侧的1
                rightDistances[i] = Integer.MAX_VALUE; // 设置为无穷大，表示没有右侧车位
            } else {
                rightDistances[i] = lastRightOne - i;  // 计算到最近右侧车位的距离
            }
        }

        // 计算每个空车位 (0) 到最近车位 (1) 的最小距离
        for (int i = 0; i < array.length; i++) {
            if (array[i] == 0) {  // 只考虑空车位的位置
                int minDistance = Math.min(leftDistances[i], rightDistances[i]);  // 取左侧和右侧最近车位的最小距离
                maxValue = Math.max(maxValue, minDistance);  // 更新最大最小距离
            }
        }

        // 输出最大最小距离
        System.out.println(maxValue);
    }

    public static void main(String[] args) {
        try {
            Scanner scan = new Scanner(System.in);
            // 读取用户输入的一行，输入格式为逗号分隔的字符串
            String[] lines = scan.nextLine().split(",");

            // 输入长度限制：如果车位的数量超过100，则返回输入错误
            if (lines.length > 100) {
                System.out.println("input error");
                return;
            }

            // 将输入的字符串数组转换为整数数组，存储车位的状态
            int[] array = new int[lines.length];
            for (int i = 0; i < lines.length; i++) {
                array[i] = Integer.parseInt(lines[i]);  // 将每个字符串转换为整数
            }

            // 调用solve方法处理并输出结果
            solve(array);
        } catch (Exception e) {
            // 如果发生任何异常，输出"input error"
            System.out.println("input error");
        }
    }
}
